package com.jessechanrui.template;

import com.itextpdf.text.pdf.PdfDocument;
import com.itextpdf.text.pdf.PdfReader;

import java.io.IOException;


import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.*;

import javax.imageio.ImageIO;
import java.io.File;

/**
 * iText5 替代 iText7 实现 PDF→图片预览
 * 迁移要点：核心类名接近，仅渲染监听器实现略有差异
 */
public class Itext5PdfToImage {
    public void convert(String pdfPath, String outputDir) throws Exception {
        // 1. 加载 PDF（和 iText7 的 PdfReader 用法一致）
        PdfReader reader = new PdfReader(pdfPath);
        PdfReaderContentParser parser = new PdfReaderContentParser(reader);
        int pageCount = reader.getNumberOfPages();

        // 2. 创建输出目录
        new File(outputDir).mkdirs();

        // 3. 逐页渲染（监听器逻辑和 iText7 类似，改动量小）
        for (int i = 1; i <= pageCount; i++) {
            int finalI = i;
            parser.processContent(i, new RenderListener() {
                @Override
                public void renderImage(ImageRenderInfo renderInfo) {
                    try {
                        // 提取图片（iText5 直接获取 ImageObject）
                        PdfImageObject imageObj = renderInfo.getImage();
                        if (imageObj != null) {
                            String imgPath = outputDir + "/page_" + finalI + ".png";
                            ImageIO.write(imageObj.getBufferedImage(), "PNG", new File(imgPath));
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                // 其他接口方法（renderText、beginTextBlock 等）空实现即可
                @Override public void beginTextBlock() {}
                @Override public void endTextBlock() {}
                @Override public void renderText(TextRenderInfo renderInfo) {}
            });
        }
        reader.close();
    }
}